Number Theory in OSCAR

Number theory in OSCAR works with a mix of systems that also build on each other: Hecke, Nemo, Flint, AbstractAlgebra, Antic. They are all put together under the name Antic. As a user, you can think about Hecke as being the main system, and find documentation in Hecke.jl: http://www.thofma.com/Hecke.jl/latest/. There is also a nice example of the basics in Hecke.jl written by Claus Fieker: https://nbviewer.jupyter.org/github/oscar-system/OSCARBinder/blob/master/Hecke.ipynb. For this exposition I used these two resources.

Creating number fields

Let's start with creating a basic number field. This is done by adding the roots of an irreducible polynomial.

$a$ is the class of $x$ in $\mathbb{Q}[x]/(x^2-2)$:

We can also create a number field without naming the class of $x$, but we have to be aware that this is a vector with two elements: the field and the class of $x$.

There are some standard number fields implemented, and we can check whether two number fields are isomorphic.

The output does not give the mathmode correctly. This seems to happen with the command cyclotomic_field. Mathematically there are no errors, though!

We can create non-simple number fields, by adding roots from multiple polynomials.......

... and convert it to a simple field!

It is generated by a polynomial of degree 8. Could it be isomorphic to N?

Representing a field as a simple extension is often needed for computations. For example, to compare it to other simple number fields.

The above gives an error since we can not compare $K$ and $L$. But we can compare $K$ and $S$!

Invariants and elements

Let's recall the fields that we have defined so far.

We compute the degree of each field, and find a generator. If the field is not a simple extension (in our case, the field $L$), we have to ask for gens instead of gen.

It is also easy to compute a basis.

Let's see if we can find why $N$ and $S$, the two number fields of degree 8, are not isomorphic.

Automorphisms and Galois groups

With ? we can ask what to do with a command.

This gives the number of automorphisms, but for the rest it is not very insightfull yet.... We get more information by asking how the automorphisms act on an element in the number field.

Also here, we can not work with a non-simple extension.

There is more possible than what is found in the online documentation, look also in the examples in Oscar.jl! For example, we can compute the Galois group of a number field by first loading the example Oscar.example("GaloisGrp.jl").

When computing a Galois group of a field extension, we get a group as well as some extra data.

The group is given in terms of permutations of the roots of the polynomial, which are approximated $p$-adically (in this case 1048589-adically). We can ask for these roots up to some precision.

The Galois group has 3 generators. But there is only one field automorphism of $k$!

This is because the field extension is not normal, so OSCAR computed the Galois group of the splitting field of the polynomial. Let's check that this is indeed the case.

Of course, when the field extension is a Galois extension, the Galois group is equal to the automorphism group.

How can we find out which group this is? We are lucky that we are working in OSCAR, and can ask our group specialist (i.e. Mima)! She told us to just give her an id of the group, and the rest will be taken care of.